#pragma once

#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
#include <string>
#include <sstream>

/**
 * @brief 用户类，用于管理用户信息
 * 
 */
class User
{
private:
    int id; // 用户ID
    std::string name; // 用户名
    std::string password; // 密码
    std::string describe; // 描述
public:
    User() = default;//默认构造函数，用于创建User对象的默认实例
    /**
     * @brief 构造函数
     * @param id 用户ID
     * @param name 用户名
     * @param password 密码
     * @param describe 描述
     */
    User(const int& id, const std::string& name, const std::string& password, const std::string& describe);
    int getId()const;//获取用户ID
    std::string getName()const;//获取用户名
    std::string getPassword()const;//获取密码
    std::string getDescribe()const;//获取描述
    void setId(int id);//设置用户ID
    std::string serialize(void)const;//序列化用户数据为字符串

    /**
     * @brief 从字符串反序列化恢复用户数据
     * @param str 包含用户数据的字符串
     * @return int 操作状态（成功/失败）
     */
    int deSerialize(const std::string& str);
    
};